r15 vs r16
11[[분류:imitated seed 2]]
22[include(틀:상위 문서, 문서=New seed)]
33
44[목차]
55== 개요 ==
66분명 New seed 개발하기 시작했는데 아무도 관심이 없고 아무도 모르고 아무도 안 쓰고 심지어 공식 문서조차 없어서 그냥 귀찮아 개발노트랑 업데이트 일지나 대충 끄적이려고 만든 문서 중 하나
77== 문제점 ==
88[youtube(v2sr-GpNV6A, start=41, end=61)]
99~~New seed === GTX-A~~
1010{{{+3 '''20초 요약'''}}}
1111=== 파서 ===
1212==== 고질적 이슈 - 규식이 ====
1313{{{#!syntax javascript
1414const rHeadings = /^(=\s(((?!\s=).)*)\s=|==\s(((?!\s==).)*)\s==|===\s(((?!\s===).)*)\s===|====\s(((?!\s====).)*)\s====|=====\s(((?!\s=====).)*)\s=====|======\s(((?!\s======).)*)\s======|=[#]\s(((?!\s[#]=).)*)\s[#]=|==[#]\s(((?!\s[#]==).)*)\s[#]==|===[#]\s(((?!\s[#]===).)*)\s[#]===|====[#]\s(((?!\s[#]====).)*)\s[#]====|=====[#]\s(((?!\s[#]=====).)*)\s[#]=====|======[#]\s(((?!\s[#]======).)*)\s[#]======)$/gm;
1515const rHeading = [, ];
1616for(var i=1; i<=6; i++) {
1717    rHeading.push(RegExp(`^${multiply('=', i)}([#]|)\\s(((?!${multiply('=', i)}).)*)\\s([#]|)${multiply('=', i)} the wood/개발노트 (비교) - 다올위키
, 'm'));
1818}
1919}}}
2020
2121엄청난 파서. ~~저거 해독하는데에 하루가 넘게 걸림~~
2222
2323심지어 원본은 더 처참하다.
2424{{{#!syntax javascript
2525const rHeadings =
2626    ver('4.7.2')
2727        ? /^(=\s(((?!\s=).)*)\s=|==\s(((?!\s==).)*)\s==|===\s(((?!\s===).)*)\s===|====\s(((?!\s====).)*)\s====|=====\s(((?!\s=====).)*)\s=====|======\s(((?!\s======).)*)\s======|=[#]\s(((?!\s[#]=).)*)\s[#]=|==[#]\s(((?!\s[#]==).)*)\s[#]==|===[#]\s(((?!\s[#]===).)*)\s[#]===|====[#]\s(((?!\s[#]====).)*)\s[#]====|=====[#]\s(((?!\s[#]=====).)*)\s[#]=====|======[#]\s(((?!\s[#]======).)*)\s[#]======)$/gm
2828        : /^(=\s(((?!\s=).)*)\s=|==\s(((?!\s==).)*)\s==|===\s(((?!\s===).)*)\s===|====\s(((?!\s====).)*)\s====|=====\s(((?!\s=====).)*)\s=====|======\s(((?!\s======).)*)\s======)$/gm ;
2929const rHeading = [, ];
3030for(var i=1; i<=6; i++) {
3131    rHeading.push(RegExp(`^${multiply('=', i)}([#]|)\\s(((?!${multiply('=', i)}).)*)\\s([#]|)${multiply('=', i)} the wood/개발노트 (비교) - 다올위키
, 'm'));
3232}
3333}}}
3434
3535그래서 이 문제를 해결하지 않는 이상 파서가 qt인 점은 해결하지 못할 것 같다.
3636==== 고질적 이슈2 - 지랄맞은 파서 반환값 ====
3737뭐 이건 다들 알 것이다. 당장 구 하늘위키 도움말만 봐도 와장창 깨져있는데 뭐 더 할 말이 있나?
3838
3939문법 지원에 대해서는 말을 아끼겠습니다. 구 하늘위키를 조금이라도 해 본 유저들이라면 충분히 뭐가 문제인지는 알 것이다.
4040== 왜 개발이 늦어질까 ==
4141뭐 아까 [[#s-2|위 문단]]에서 20초 요약이라고 넣은 ~~씹덕과 철덕의 콜라보레이션~~ 노래와 같은 상황이다
4242
4343||<table align=center><tablewidth=400px><bgcolor=#916292><color=#fff> 한계까지 발버둥친 공사는 ||
4444|| 일단 가능한 한 모든 것을 갈아넣어 개조라는 이름의 정상화 시작 ||
4545||<bgcolor=#916292><color=#fff> 상상 이상으로 난공사였고 ||
4646|| 이 칸에 서술하기엔 공간이 너무 적어 각주로 설명.[* [[파일:이딴게위1키.png]]][* 우선, 틀 문법은 이미 모든 부분이 정규식과 알 수 없는 변수명들로 인해 읽기 힘든 지경에 있을 뿐더러, col 계열 문법의 핵심인 '한 줄에 적용'은 일반 html, css에선 적용하기 '''매우''' 힘든, 아니 그냥 불가능한 사항에 가깝다. 기껏 해봐야 간단한 문법들로 1차원적인 코드를 짜는 지경인데 복잡한 렌더러를 잘 구성할 수 있을까? 당연히 안 될 것이다. syntax, ruby, dday 등 구현되지 않은 문법들을 구현하는 것 또한 어렵다. 물론 단순히 정규식을 통해 변경된 값을 반환하는 것은 매우 쉽지만, 구현되지 않은 문법만 수십가지가 되기에 당연히 어려울 것이다.][* 탈퇴와 닉네임 변경은 UUID가 없는 현 병아리 특성상 일괄적으로 DB를 수정하게 되며 깨지는 현상이 있고, 심지어는 탈퇴를 하면 한 사용자로 인식된다는 큰 문제도 있다. 이로 인해 당연히 해당 기능을 다시 개발해야 한다.][* 테마에 따라 표시되는 파일이 다르게, 다른 테마의 파일은 표시되지 않게 하는 것 또한 매개변수를 추가해야 하고, 이를 구현하는 것에 큰 시간이 소요될 것이다. 안 그래도 svg 업로드 안 되는 문제조차 개판난 변수명과 뒤죽박죽 정규식으로 수정하지 못하는 상황인데 이를 잘 수정할 수 있을까? 없을 것이다.][* 그리고 the seed 하위 호환 문제도 있다. Node 메모리 할당이 1.4GB인데, 이를 초과하여 강제 종료되는 경우도 있다. 4.0.0부터 시작해 4.27.0까지 모든 버전을 커버해야 하기 때문에 자연스럽게 최적화는 개판이 되기 때문이다. 최적화를 위해 모든 체제를 손보려고 하면 사실상 모든 파일에 ver, verrev 함수가 포함되어 하위 호환을 책임지기에 이는 매우 어려운 상황이다.][* 이 외에도 문제는 아주 많다. 단순 편의성 개선이 1~3개라 가정하면 파서 수정은 10~30개, 기능 개선은 5~15개일 것이다. 아무리 단순한 토목 공사여도 24시간 노가다 뛰면 사람은 뒤진다. 안 그래도 적은 시간 쪼개고 쪼개서 개발하는 상황에서 이를 전부 다 해결하기에는 불가능할 것이고, 오랜 시간이 걸릴 것이다. 애초에 이미 기반 자체가 망가져있어 이 망가진 기반을 완전히 갈아엎어야 하는 상황이므로 자연스럽게 이 공사는 난공사일 수밖에 없다.]||
4747||<bgcolor=#916292><color=#fff> 애매한 위치에서 단절된 ||
4848|| 일단 큰 이슈들은 해결했지만 그럼에도 불구 ||
4949||<bgcolor=#916292><color=#fff> 지티엑스에이 부분 개통 ||
5050|| 아직 완전 개통[* 정식 릴리즈 배포]하지 못하는 퀄리티 ||
5151||<bgcolor=#916292><color=#fff> 일단 개통하고 보니 현실은 ||
5252|| 그래도 굴러가기는 하니 사용해보면 ||
5353||<bgcolor=#916292><color=#fff> 남은 까마득한 공사 일정 ||
5454|| 아직 한참 남은 수정할 부분들[* [[파일:이딴게위1키.png]] 더 이상 자세한 설명은 생략한다. ~~어쨌든 까마득한 공사 일정이죠?~~] ||
5555||<bgcolor=#916292><color=#fff> 황금노선이라는 말 하나로 ||
5656|| ~~황금 아니고 구리긴 한데~~ 우리만의 엔진이 될 수 있다는 생각을 가짐 ||
5757||<bgcolor=#916292><color=#fff> 일단 개통 후 쪼개서 운행해 ||
5858|| 근데 일단 써보십쇼 정상 작동은 안 합니다 ㅇㅇ ||
5959
6060=== 상세 ===
6161추가 바람.
6262== 개발일지 ==
6363=== 문법 신창섭화 ===
6464==== 동영상 매크로 ====
6565{{{#!syntax javascript
6666    // 동화상
6767    for(let finc of (data.match(/\[(youtube|kakaotv|nicovideo|vimeo|navertv)[(](((?![)])(.|<spannw>[)]<\/spannw>))+)[)]\]/gi) || [])) {
6868        let inc = finc.match(/\[(youtube|kakaotv|nicovideo|vimeo|navertv)[(](((?!([)]))(.|<spannw>[)]<\/spannw>))+)[)]\]/i);
6969        let vid = inc[1].replace(/<spannw>[)]<\/spannw>/, ')');
7070        let id = inc[2].replace(/<spannw>[)]<\/spannw>/, ')').split(',')[0].replace(/^(\s+)/, '').replace(/(\s+)$/, '').replace(/[&]quot;/g, '"').replace(/[&]amp;/g, '&').replace(/[&]lt;/g, '<').replace(/[&]gt;/g, '>');
7171        let paramsa = inc[2].replace(/<spannw>[)]<\/spannw>/, ')').split(',').slice(1, 99999);
7272        let params = {};
7373        for(let item of paramsa) {
7474            let pp = item.split('=')[0].replace(/^(\s+)/, '').replace(/(\s+)$/, '').toLowerCase();
7575            params[pp] = item.replace(pp + '=', '').replace(/^(\s+)/, '').replace(/(\s+)$/, '');
7676        }
7777        let d;
7878        switch(vid.toLowerCase()) {
7979        case 'youtube': {
8080            d = `<iframe allowfullscreen src="//www.youtube.com/embed/${encodeURIComponent(id)}${params.start ? `?start=${encodeURIComponent(params.start)}` : ''}${params.end ? ((params.start ? '&' : '?') + 'end=' + encodeURIComponent(params.end)) : ''}" loading=lazy width="${params.width || 640}" height="${params.height || 360}" frameborder=0></iframe>`;
8181        }
8282        break; case 'kakaotv': {
8383            d = `<iframe allowfullscreen src="//tv.kakao.com/embed/player/cliplink/${encodeURIComponent(id)}" loading=lazy width="${params.width || 640}" height="${params.height || 360}" frameborder=0></iframe>`;
8484        }
8585        break; case 'nicovideo': {
8686 d = `<iframe allowfullscreen src="//embed.nicovideo.jp/watch/sm${encodeURIComponent(id)}" loading=lazy width="${params.width || 720}" height="${params.height || 480}" frameborder=0></iframe>`;
8787        }
8888        break; case 'vimeo': {
8989            d = `<iframe allowfullscreen src="//player.vimeo.com/video/${encodeURIComponent(id)}" loading=lazy width="${params.width || 640}" height="${params.height || 360}" frameborder=0></iframe>`;
9090        }
9191        break; case 'navertv': {
9292            d = `<iframe allowfullscreen src="//tv.naver.com/embed/${encodeURIComponent(id)}" loading=lazy width="${params.width || 640}" height="${params.height || 360}" frameborder=0></iframe>`;
9393        }
9494        }
9595        
9696        data = data.replace(finc, d);
9797    }
9898}}}
9999
100100여기서 nicovideo.jp를 정상화해야한다
101101
102102아주 간단하게 sm(id 8자리)와 (id 8자리) 둘 다 작동하게 수정해보자
103103
104104{{{#!syntax javascript
105105        break; case 'nicovideo': {
106106 id = id.startsWith('sm') ? id : `sm${id}`;
107107 d = `<iframe allowfullscreen src="//embed.nicovideo.jp/watch/${encodeURIComponent(id)}" loading=lazy width="${params.width || 720}" height="${params.height || 480}" frameborder=0></iframe>`;
108108        }
109109}}}
110110
111111이렇게 정상화하면 잘 작동할 것이다
112112
113113=== 나무야 살려줘 ===
114114{{{#!syntax markdown
115115{{{#!if namu != undefined
116116살려주세요}}}
117117}}}
118118
119119저거 구현하기 vs 엔진 개발 접기 ~~[[오버라이드|라면 잠시 후자를 고르겠어]]~~
120120
121121최종 결과
122122
123123{{{#!syntax javascript
124124else if(data.substr(pos + 3, 4) == '#!if' && !discussion) {
125125 ^^^
126126TypeError: data is not defined.
127127 at Eval(D:\169.9\routes\router.js:27:7)
128128}}}